package groovy

import java.text.SimpleDateFormat

//主要用于备份数据库使用

/**
 * 参数
 * */
interface PARAMS {
    // sql 备份路径
    String FILE_PATH = new File(new File("").getAbsolutePath()).getParent() + "/db/";
    // 日期格式化
    SimpleDateFormat FORMAT = new SimpleDateFormat("yyyyMMdd");
    // 保护开关，防止误点，使用时改成true 即可
    Boolean switchBack = false
    // 数据库名称
//    String DB_NAME = "micro-module";
//    String DB_NAME = "nacos";
}

/**
 * 执行
 */
static void main(String[] args) {
    start();
}

/**
 * 数据库连接用户名与密码
 */
interface DbConfig {
    String USER_NAME = "root";
    String PASSWORD = "root";
}

/**
 * 数据库备份
 */
def start() {
    if (!PARAMS.switchBack) {
        print("若要使用Groovy 脚本备份数据库，请将状态切成true")
        return
    }
    try {
        StringBuilder cmdBuilder = new StringBuilder();
        cmdBuilder.append("mysqldump -u")
                .append(DbConfig.USER_NAME)
                .append(" -p")
                .append(DbConfig.PASSWORD)
                .append(" ")
                .append(PARAMS.DB_NAME)
                .append(" -r ")
                .append(PARAMS.FILE_PATH)
                .append(PARAMS.DB_NAME)
                .append("_bak_")
                .append(PARAMS.FORMAT.format(new Date()))
                .append(".sql ").append("--skip-lock-tables");
        Process process = Runtime.getRuntime().exec(cmdBuilder.toString());
        int processComplete = process.waitFor();
        if (processComplete == 0) {
            print("备份成功")
        } else {
            print("数据库备份失败")
        }
    } catch (Exception e) {
        print("备份失败" + e)
    }
}